﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using Sinacor.UI.Bovespa.Clientes.Communication.Bovespa.Cliente.DicionarioErroExportacaoComitente;

namespace Sinacor.UI.Bovespa.Clientes.Communication.Translator.ModelToDataContract
{
    /// <summary>
    /// Translator.ModelToDataContract Class - DicionarioErroExportacaoComitente
    /// </summary>
    public class DicionarioErroExportacaoComitente
    {
        #region Métodos Públicos

        /// <summary>
        /// Traduz uma Model do tipo ErroExportacaoComitente para um comunication ErroExportacaoComitenteResponse
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public ErroExportacaoComitenteRequest ToErroExportacaoComitenteRequest(Model.ErroExportacaoComitente from)
        {
            ErroExportacaoComitenteRequest to = new ErroExportacaoComitenteRequest();

            to.Codigo = from.Codigo;
            to.Descricao = from.Descricao;

            return to;
        }

        /// <summary>
        /// Traduz uma ModelCollection do tipo ErroExportacaoComitente para um comunication do tipo List(ErroExportacaoComitenteRequest)
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public List<ErroExportacaoComitenteRequest> ToErroExportacaoComitenteRequest(ModelCollection<Model.ErroExportacaoComitente> from)
        {
            List<ErroExportacaoComitenteRequest> lista = new List<ErroExportacaoComitenteRequest>();

            foreach (Model.ErroExportacaoComitente req in from)
            {
                lista.Add(ToErroExportacaoComitenteRequest(req));
            }

            return lista;
        }

        /// <summary>
        /// Traduz uma Model do tipo Parameter.FiltroErroExportacaoComitenteChave para um comunication FiltroErroExportacaoComitenteChaveRequest
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public FiltroErroExportacaoComitenteChaveRequest ToFiltroErroExportacaoComitenteChaveRequest(Model.Parameter.FiltroErroExportacaoComitenteChave from)
        {
            FiltroErroExportacaoComitenteChaveRequest to = new FiltroErroExportacaoComitenteChaveRequest();

            to.Codigo = from.Codigo;

            return to;
        }

        /// <summary>
        /// Traduz uma ModelCollection do tipo Parameter.FiltroErroExportacaoComitenteChave para um comunication do tipo List(FiltroErroExportacaoComitenteChaveRequest)
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public List<FiltroErroExportacaoComitenteChaveRequest> ToFiltroErroExportacaoComitenteChaveRequest(ModelCollection<Model.Parameter.FiltroErroExportacaoComitenteChave> from)
        {
            List<FiltroErroExportacaoComitenteChaveRequest> lista = new List<FiltroErroExportacaoComitenteChaveRequest>();

            foreach (Model.Parameter.FiltroErroExportacaoComitenteChave req in from)
            {
                lista.Add(ToFiltroErroExportacaoComitenteChaveRequest(req));
            }

            return lista;
        }

        /// <summary>
        /// Traduz uma Model do tipo Parameter.FiltroErroExportacaoComitente para um comunication FiltroErroExportacaoComitenteRequest
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public FiltroErroExportacaoComitenteRequest ToFiltroErroExportacaoComitenteRequest(Model.Parameter.FiltroErroExportacaoComitente from)
        {
            FiltroErroExportacaoComitenteRequest to = new FiltroErroExportacaoComitenteRequest();

            to.Codigo = from.Codigo;
            to.Descricao = from.Descricao;

            return to;
        }

        /// <summary>
        /// Traduz uma ModelCollection do tipo Parameter.FiltroErroExportacaoComitente para um comunication do tipo List(FiltroErroExportacaoComitenteRequest)
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public List<FiltroErroExportacaoComitenteRequest> ToFiltroErroExportacaoComitenteRequest(ModelCollection<Model.Parameter.FiltroErroExportacaoComitente> from)
        {
            List<FiltroErroExportacaoComitenteRequest> lista = new List<FiltroErroExportacaoComitenteRequest>();

            foreach (Model.Parameter.FiltroErroExportacaoComitente req in from)
            {
                lista.Add(ToFiltroErroExportacaoComitenteRequest(req));
            }
            
            return lista;
        }

        #endregion
    }
}
